From ace686dba90ba734daf11d07c25612a8656953b7 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Wed, 24 May 2017 18:30:35 +0200 Subject: [PATCH] gtktreeview: Fix invalidation coordinates We must account for the widget allocation now that there is no view_window. --- gtk/gtktreeview.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index 2519010358..a8a500ff81 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -4372,14 +4372,17 @@ static void gtk_tree_view_invalidate_bin_region (GtkTreeView *tree_view, cairo_region_t *region) { + GtkAllocation allocation; + cairo_region_intersect_rectangle (region, &(GdkRectangle) { 0, 0, gdk_window_get_width (tree_view->priv->bin_window), gdk_window_get_height (tree_view->priv->bin_window)}); + gtk_widget_get_allocation (GTK_WIDGET (tree_view), &allocation); cairo_region_translate (region, - - (gint) gtk_adjustment_get_value (tree_view->priv->hadjustment), - gtk_tree_view_get_effective_header_height (tree_view)); + allocation.x - (gint) gtk_adjustment_get_value (tree_view->priv->hadjustment), + allocation.y + gtk_tree_view_get_effective_header_height (tree_view)); gtk_widget_queue_draw_region (GTK_WIDGET (tree_view), region); @@ -10982,11 +10985,13 @@ gtk_tree_view_adjustment_changed (GtkAdjustment *adjustment, { if (gtk_widget_get_realized (GTK_WIDGET (tree_view))) { + GtkAllocation allocation; gint dy; - + + gtk_widget_get_allocation (GTK_WIDGET (tree_view), &allocation); gdk_window_move (tree_view->priv->bin_window, - - gtk_adjustment_get_value (tree_view->priv->hadjustment), - gtk_tree_view_get_effective_header_height (tree_view)); + allocation.x - gtk_adjustment_get_value (tree_view->priv->hadjustment), + allocation.y + gtk_tree_view_get_effective_header_height (tree_view)); dy = tree_view->priv->dy - (int) gtk_adjustment_get_value (tree_view->priv->vadjustment); tree_view->priv->in_scroll = TRUE; gdk_window_scroll (tree_view->priv->bin_window, 0, dy); -- 2.30.2